package exception;

/**
 * 使用当前类测试异常的抛出
 */
public class Person {
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) throws IllegalAgeException {//但不合逻辑时，主动抛出异常。
        if(age<0 || age>100){
            /*只有RuntimeException的抛出不是必须写throws声明异常的抛出*/
//            throw new RuntimeException("年龄不合法!");
            throw new IllegalAgeException("年龄不合法!");

            /*当一个方法使用throw抛出异常时就应当在当前方法上使用throw声明该异常的抛出*/
            //当调用此方法异常抛出时会提示你，需要捕获，可能出现的异常
            /*
            当调用一个含有throw声明异常抛出的方法时，编译器要求必须处理这个异常，否则编译不通过
            处理方式有两种:
            1.:使用try-catch捕获该异常
            2.:在当前方法上继续使用throw声明该异常的抛出
                具有选取那种要结合实际情况的责任制问题而定.
         */
//            throw new Exception("年龄不合法!");//
        }
        this.age = age;
    }
}
